var wpaicgPDFBtns=document.querySelectorAll('.wpaicg-pdf-icon'); var wpaicgPDFFiles=document.querySelectorAll('.wpaicg-pdf-file'); var wpaicgPDFRemoves=document.querySelectorAll('.wpaicg-pdf-remove'); function wpaicgPDFEvent(btn){ var fileInput=btn.parentElement.querySelector('.wpaicg-pdf-file'); fileInput.click(); } function wpaicgPDFEmbedding(start,namespace,filename,nonce,contents,type,bot_id,chat,callback){ var result=''; var next=start+1; var pageContent=contents[start]; var embeddingData=new FormData(); var embeddingRequest=new XMLHttpRequest(); embeddingData.append('nonce', nonce); embeddingData.append('action', 'wpaicg_pdf_embedding'); embeddingData.append('content', pageContent); embeddingData.append('page', next); embeddingData.append('namespace', namespace); embeddingData.append('type', type); embeddingData.append('bot_id', bot_id); embeddingData.append('filename', filename); embeddingRequest.open("POST", wpaicgParams.ajax_url,true); embeddingRequest.send(embeddingData); embeddingRequest.onreadystatechange=function (oEvent){ if(embeddingRequest.readyState===4){ if(embeddingRequest.status===200){ result=this.responseText; result=JSON.parse(result); if(result.status==='success'){ if(next===contents.length){ callback(result) }else{ wpaicgPDFEmbedding(next, namespace, filename, nonce, contents, type, bot_id,chat, callback); }}else{ alert(result.msg); }} }} } async function wpaicgPDFChange(input){ var type=input.getAttribute('data-type'); var chat,class_ai_item; if(type==='widget'){ chat=input.closest('.wpaicg-chatbox'); class_ai_item='wpaicg-chat-ai-message'; }else{ chat=input.closest('.wpaicg-chat-shortcode'); class_ai_item='wpaicg-ai-message'; } let wpaicg_ai_bg=chat.getAttribute('data-ai-bg-color'); let wpaicg_font_color=chat.getAttribute('data-color'); let wpaicg_font_size=chat.getAttribute('data-fontsize'); let wpaicg_nonce=chat.getAttribute('data-nonce'); let wpaicg_ai_name=chat.getAttribute('data-ai-name') + ':'; let wpaicg_use_avatar=parseInt(chat.getAttribute('data-use-avatar')); let wpaicg_ai_avatar=chat.getAttribute('data-ai-avatar'); if(wpaicg_use_avatar){ wpaicg_ai_name=''; } var pdfLoading=input.parentElement.querySelector('.wpaicg-pdf-loading'); var pdfIcon=input.parentElement.querySelector('.wpaicg-pdf-icon'); var pdfRemove=input.parentElement.querySelector('.wpaicg-pdf-remove'); var limitPage=parseInt(input.getAttribute('data-limit')); if(input.files.length){ pdfIcon.style.display='none'; pdfRemove.style.display='none'; pdfLoading.style.display='block'; var _OBJECT_URL=URL.createObjectURL(input.files[0]) var loadingTask=pdfjsLib.getDocument({url: _OBJECT_URL}); var pageContents=[]; var pdfTextContent=''; var pageNumbers=0; var filename=input.files[0].name; await loadingTask.promise.then(async function (pdf){ pageNumbers=pdf.numPages; for (var i=1; i <=pageNumbers; i++){ var page=await pdf.getPage(i); var textContent=await page.getTextContent(); pageContents.push(textContent.items.map(u=> u.str).join("\n")); pdfTextContent +=textContent.items.map(u=> u.str).join("\n"); }}); if(pageContents.length){ if(pageNumbers > limitPage){ pdfIcon.style.display='block'; pdfLoading.style.display='none'; pdfRemove.style.display='none'; input.value=''; alert('Your PDF exceeds the page limit of '+limitPage+'. Please upload a smaller one.'); }else{ var namespace='gptpdf_'+Math.ceil(Math.random()*100000); var type=chat.getAttribute('data-type'); var bot_id=parseInt(chat.getAttribute('data-bot-id')); wpaicgPDFEmbedding(0,namespace,filename,wpaicg_nonce,pageContents,type,bot_id,chat,function(result){ if(result.status==='success'){ var firstWords=wpaicggetWords(pdfTextContent,1000); var questionData=new FormData(); var questionRequest=new XMLHttpRequest(); questionData.append('type', type); questionData.append('bot_id', bot_id); questionData.append('nonce', wpaicg_nonce); questionData.append('action', 'wpaicg_example_questions'); questionData.append('content', firstWords); questionRequest.open("POST", wpaicgParams.ajax_url); questionRequest.send(questionData); questionRequest.onload=function (oEvent){ result=this.responseText; if(result!==''){ result=result.replace(/\n/g, '
'); result=JSON.parse(result); if(result.status==='success'){ var wpaicg_randomnum=Math.floor((Math.random() * 100000) + 1); result.data=result.data.replace(/\n/g,'
'); var wpaicg_message='
  • ' + wpaicg_ai_name + ''+result.data+'

  • '; if(type==='widget'){ chat.querySelector('.wpaicg-chatbox-messages').innerHTML +=wpaicg_message; }else{ chat.querySelector('.wpaicg-chat-shortcode-messages').innerHTML +=wpaicg_message; } chat.setAttribute('data-pdf', namespace); pdfIcon.style.display='none'; pdfLoading.style.display='none'; pdfRemove.style.display='flex'; }else{ pdfRemove.style.display='none'; pdfIcon.style.display='block'; pdfLoading.style.display='none'; alert(result.msg); }} }}else{ pdfIcon.style.display='block'; pdfLoading.style.display='none'; pdfRemove.style.display='none'; alert(result.msg); }}); }}else{ alert('Your pdf is empty.'); pdfIcon.style.display='block'; pdfLoading.style.display='none'; input.value=''; }} } function wpaicggetWords(str,limit){ return str.split(/\s+/).slice(0,limit).join(" "); } if(wpaicgPDFBtns&&wpaicgPDFBtns.length){ for (let i=0; i < wpaicgPDFBtns.length; i++){ wpaicgPDFBtns[i].addEventListener('click', function (){ wpaicgPDFEvent(wpaicgPDFBtns[i]); }); }} if(wpaicgPDFFiles&&wpaicgPDFFiles.length){ for (let i=0; i < wpaicgPDFFiles.length; i++){ wpaicgPDFFiles[i].addEventListener('change', function (e){ wpaicgPDFChange(e.currentTarget); }); }} if(wpaicgPDFRemoves&&wpaicgPDFRemoves.length){ for (let i=0; i < wpaicgPDFRemoves.length; i++){ wpaicgPDFRemoves[i].addEventListener('click', function (e){ var chat; var btn=e.currentTarget; var type=btn.getAttribute('data-type'); if(type==='shortcode'){ chat=btn.closest('.wpaicg-chat-shortcode'); chat.setAttribute('data-pdf',''); chat.querySelector('.wpaicg-chat-shortcode-messages').innerHTML +='
  • '+wpaicgParams.languages.removed_pdf+'
  • '; }else{ chat=btn.closest('.wpaicg-chatbox'); chat.setAttribute('data-pdf','') chat.querySelector('.wpaicg-chatbox-messages').innerHTML +='
  • '+wpaicgParams.languages.removed_pdf+'
  • '; } btn.style.display='none'; btn.parentElement.querySelector('.wpaicg-pdf-icon').style.display='block'; }); }}; var resetFeedbackButtons=function(){ document.getElementById('wpaicg-prompt-thumbs_up').disabled=false; document.getElementById('wpaicg-prompt-thumbs_up').style.display='inline-block'; document.getElementById('wpaicg-prompt-thumbs_down').disabled=false; document.getElementById('wpaicg-prompt-thumbs_down').style.display='inline-block'; }; var wpaicgPlayGround={ init: function(){ var wpaicg_PlayGround=this; var wpaicgFormsShortcode=document.getElementsByClassName('wpaicg-playground-shortcode'); var wpaicgClearButtons=document.getElementsByClassName('wpaicg-prompt-clear'); var wpaicgStopButtons=document.getElementsByClassName('wpaicg-prompt-stop-generate'); var wpaicgSaveButtons=document.getElementsByClassName('wpaicg-prompt-save-draft'); var wpaicgDownloadButtons=document.getElementsByClassName('wpaicg-prompt-download'); var wpaicgCopyButtons=document.getElementsByClassName('wpaicg-prompt-copy_button'); var wpaicgThumbsUpButtons=document.getElementsByClassName('wpaicg-prompt-thumbs_up'); var wpaicgThumbsDownButtons=document.getElementsByClassName('wpaicg-prompt-thumbs_down'); if(wpaicgDownloadButtons&&wpaicgDownloadButtons.length){ for(var i=0;i < wpaicgDownloadButtons.length;i++){ var wpaicgDownloadButton=wpaicgDownloadButtons[i]; wpaicgDownloadButton.addEventListener('click', function (e){ e.preventDefault(); var wpaicgDownloadButton=e.currentTarget; var wpaicgForm=wpaicgDownloadButton.closest('.wpaicg-prompt-form'); var formID=wpaicgForm.getAttribute('data-id'); var wpaicgFormData=window['wpaicgForm'+formID]; var currentContent=wpaicg_PlayGround.getContent(wpaicgFormData.response,formID); currentContent=currentContent.replace(/ /g, ' '); var element=document.createElement('a'); currentContent=currentContent.replace(/
    /g,"\n"); currentContent=currentContent.replace(/
    /g,"\n"); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(currentContent)); element.setAttribute('download', 'response.txt'); element.style.display='none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); }); }} if(wpaicgCopyButtons&&wpaicgCopyButtons.length){ for(var i=0; i < wpaicgCopyButtons.length; i++){ var wpaicgCopyButton=wpaicgCopyButtons[i]; wpaicgCopyButton.addEventListener('click', function (e){ e.preventDefault(); var wpaicgCopyButton=e.currentTarget; var originalText=wpaicgCopyButton.textContent; wpaicgCopyButton.textContent="👍"; setTimeout(function(){ wpaicgCopyButton.textContent=originalText; }, 2000); var wpaicgForm=wpaicgCopyButton.closest('.wpaicg-prompt-form'); var formID=wpaicgForm.getAttribute('data-id'); var wpaicgFormData=window['wpaicgForm'+formID]; var responseText=wpaicgPlayGround.getContent(wpaicgFormData.response, formID); responseText=responseText.replace(/ /g, ' '); responseText=responseText.replace(//g, '\r\n'); responseText=responseText.replace(/\r\n\r\n/g, '\r\n\r\n'); navigator.clipboard.writeText(responseText).then(function(){ console.log('Text successfully copied to clipboard'); }).catch(function(err){ console.error('Unable to copy text to clipboard', err); }); }); }} if(wpaicgClearButtons&&wpaicgClearButtons.length){ for(var i=0;i < wpaicgClearButtons.length;i++){ var wpaicgClearButton=wpaicgClearButtons[i]; wpaicgClearButton.addEventListener('click', function (e){ e.preventDefault(); var wpaicgClearButton=e.currentTarget; var wpaicgForm=wpaicgClearButton.closest('.wpaicg-prompt-form'); var formID=wpaicgForm.getAttribute('data-id'); var wpaicgFormData=window['wpaicgForm'+formID]; var wpaicgSaveResult=wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0]; wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,''); wpaicgSaveResult.style.display='none'; }); }} if(wpaicgStopButtons&&wpaicgStopButtons.length){ for(var i=0;i < wpaicgStopButtons.length;i++){ var wpaicgStopButton=wpaicgStopButtons[i]; wpaicgStopButton.addEventListener('click', function (e){ e.preventDefault(); var wpaicgStopButton=e.currentTarget; var wpaicgForm=wpaicgStopButton.closest('.wpaicg-prompt-form'); var eventID=wpaicgStopButton.getAttribute('data-event'); var wpaicgSaveResult=wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0]; var wpaicgGenerateBtn=wpaicgForm.getElementsByClassName('wpaicg-generate-button')[0]; wpaicg_PlayGround.eventClose(eventID,wpaicgStopButton,wpaicgSaveResult,wpaicgGenerateBtn); }); }} if(wpaicgSaveButtons&&wpaicgSaveButtons.length){ for(var i=0;i < wpaicgSaveButtons.length;i++){ var wpaicgSaveButton=wpaicgSaveButtons[i]; wpaicgSaveButton.addEventListener('click', function (e){ e.preventDefault(); var wpaicgSaveButton=e.currentTarget; var wpaicgForm=wpaicgSaveButton.closest('.wpaicg-prompt-form'); var formID=wpaicgForm.getAttribute('data-id'); var wpaicgFormData=window['wpaicgForm'+formID]; var title=wpaicgForm.getElementsByClassName('wpaicg-prompt-post_title')[0].value; var content=wpaicg_PlayGround.getContent(wpaicgFormData.response,formID); if(title===''){ alert('Please insert title'); }else if(content===''){ alert('Please wait generate content') }else{ const xhttp=new XMLHttpRequest(); xhttp.open('POST', wpaicgFormData.ajax); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send('action=wpaicg_save_draft_post_extra&title=' + title + '&content=' + content+'&save_source=promptbase&nonce='+wpaicgFormData.ajax_nonce); wpaicg_PlayGround.loading.add(wpaicgSaveButton); xhttp.onreadystatechange=function (oEvent){ if(xhttp.readyState===4){ wpaicg_PlayGround.loading.remove(wpaicgSaveButton); if(xhttp.status===200){ var wpaicg_response=this.responseText; wpaicg_response=JSON.parse(wpaicg_response); if(wpaicg_response.status==='success'){ window.location.href=wpaicgFormData.post+'?post=' + wpaicg_response.id + '&action=edit'; }else{ alert(wpaicg_response.msg); }}else{ alert('Something went wrong'); }} }} }); }} if(wpaicgFormsShortcode&&wpaicgFormsShortcode.length){ for(var i=0;i< wpaicgFormsShortcode.length;i++){ var wpaicgFormShortcode=wpaicgFormsShortcode[i]; var wpaicgForm=wpaicgFormShortcode.getElementsByClassName('wpaicg-prompt-form')[0]; wpaicgForm.addEventListener('submit', function (e){ e.preventDefault(); var wpaicgForm=e.currentTarget; var formID=wpaicgForm.getAttribute('data-id'); var formSource=wpaicgForm.getAttribute('data-source'); var wpaicgFormData=window['wpaicgForm'+formID]; if(wpaicgFormData&&wpaicgFormData.feedback_buttons==='yes'){ resetFeedbackButtons(); } var wpaicgMaxToken=wpaicgForm.getElementsByClassName('wpaicg-prompt-max_tokens')[0]; var wpaicgTemperature=wpaicgForm.getElementsByClassName('wpaicg-prompt-temperature')[0]; var wpaicgTopP=wpaicgForm.getElementsByClassName('wpaicg-prompt-top_p')[0]; var wpaicgBestOf=wpaicgForm.getElementsByClassName('wpaicg-prompt-best_of')[0]; var wpaicgFP=wpaicgForm.getElementsByClassName('wpaicg-prompt-frequency_penalty')[0]; var wpaicgPP=wpaicgForm.getElementsByClassName('wpaicg-prompt-presence_penalty')[0]; var wpaicgMaxLines=wpaicgForm.getElementsByClassName('wpaicg-prompt-max-lines')[0]; var wpaicgPromptTitle=wpaicgForm.getElementsByClassName('wpaicg-prompt-title')[0]; var wpaicgPromptTitleFilled=wpaicgForm.getElementsByClassName('wpaicg-prompt-title-filled')[0]; var wpaicgGenerateBtn=wpaicgForm.getElementsByClassName('wpaicg-generate-button')[0]; var wpaicgSaveResult=wpaicgForm.getElementsByClassName('wpaicg-prompt-save-result')[0]; var wpaicgStop=wpaicgForm.getElementsByClassName('wpaicg-prompt-stop-generate')[0]; var max_tokens=wpaicgMaxToken.value; var temperature=wpaicgTemperature.value; var top_p=wpaicgTopP.value; var best_of=wpaicgBestOf.value; var frequency_penalty=wpaicgFP.value; var presence_penalty=wpaicgPP.value; var error_message=false; var title=wpaicgPromptTitle.value; if(title===''){ error_message='Please insert prompt'; }else if(max_tokens===''){ error_message='Please enter max tokens'; }else if(parseFloat(max_tokens) < 1||parseFloat(max_tokens) > 8000){ error_message='Please enter a valid max tokens value between 1 and 8000'; }else if(temperature===''){ error_message='Please enter temperature'; }else if(parseFloat(temperature) < 0||parseFloat(temperature) > 1){ error_message='Please enter a valid temperature value between 0 and 1'; }else if(top_p===''){ error_message='Please enter Top P'; }else if(parseFloat(top_p) < 0||parseFloat(top_p) > 1){ error_message='Please enter a valid Top P value between 0 and 1'; }else if(best_of===''){ error_message='Please enter best of'; }else if(parseFloat(best_of) < 1||parseFloat(best_of) > 20){ error_message='Please enter a valid best of value between 0 and 1'; }else if(frequency_penalty===''){ error_message='Please enter frequency penalty'; }else if(parseFloat(frequency_penalty) < 0||parseFloat(frequency_penalty) > 2){ error_message='Please enter a valid frequency penalty value between 0 and 2'; }else if(presence_penalty===''){ error_message='Please enter presence penalty'; }else if(parseFloat(presence_penalty) < 0||parseFloat(presence_penalty) > 2){ error_message='Please enter a valid presence penalty value between 0 and 2'; } if(error_message){ alert(error_message); }else{ if(typeof wpaicgFormData.fields==='object'){ for (var i=0; i < wpaicgFormData.fields.length; i++){ var form_field=wpaicgFormData.fields[i]; var field=wpaicgForm.getElementsByClassName('wpaicg-form-field-' + i)[0]; var field_type=form_field['type']!==undefined ? form_field['type']:'text'; var field_label=form_field['label']!==undefined ? form_field['label']:''; var field_min=form_field['min']!==undefined ? form_field['min']:''; var field_max=form_field['max']!==undefined ? form_field['max']:''; if(field_type!=='radio'&&field_type!=='checkbox'){ var field_value=field.value; if(field_type==='text'||field_type==='textarea'||field_type==='email'||field_type==='url'){ if(field_min!==''&&field_value.length < parseInt(field_min)){ error_message=field_label + ' minimum ' + field_min + ' characters'; }else if(field_max!==''&&field_value.length > parseInt(field_max)){ error_message=field_label + ' maximum ' + field_max + ' characters'; }else if(field_type==='email'&&!wpaicg_PlayGround.validate.email(field_value)){ error_message=field_label + ' must be email address'; }else if(field_type==='url'&&!wpaicg_PlayGround.validate.url(field_value)){ error_message=field_label + ' must be url'; }}else if(field_type==='number'){ if(field_min!==''&&parseFloat(field_value) < parseInt(field_min)){ error_message=field_label + ' minimum ' + field_min; }else if(field_max!==''&&parseFloat(field_value) > parseInt(field_max)){ error_message=field_label + ' maximum ' + field_max; }} }else if(field_type==='checkbox'||field_type==='radio'){ var field_inputs=field.getElementsByTagName('input'); var field_checked=false; if(field_inputs&&field_inputs.length){ for (var y=0; y < field_inputs.length; y++){ var field_input=field_inputs[y]; if(field_input.checked){ field_checked=true; }} } if(!field_checked){ error_message=field_label + ' is required'; }} }} if(error_message){ alert(error_message); }else{ if(typeof wpaicgFormData.fields==='object'){ for (var i=0; i < wpaicgFormData.fields.length; i++){ var form_field=wpaicgFormData.fields[i]; var field_type=form_field.type; var field=wpaicgForm.getElementsByClassName('wpaicg-form-field-' + i)[0]; var field_name=form_field['id']!==undefined ? form_field['id']:''; var field_value; if(field_type==='checkbox'||field_type==='radio'){ field_value=''; var field_inputs=field.getElementsByTagName('input'); if(field_inputs&&field_inputs.length){ for (var y=0; y < field_inputs.length; y++){ var field_input=field_inputs[y]; if(field_input.checked){ var current_field_value=field_input.value; if(current_field_value!==undefined&¤t_field_value!==''){ field_value +=(field_value==='' ? '':', ') + current_field_value; }} }} }else{ field_value=field.value; } var sRegExInput=new RegExp('{' + field_name + '}', 'g'); title=title.replace(sRegExInput, field_value); }} if(formSource==='form'){ wpaicgPromptTitleFilled.value=title + ".\n\n"; } let queryString=new URLSearchParams(new FormData(wpaicgForm)).toString(); wpaicg_PlayGround.loading.add(wpaicgGenerateBtn); wpaicgSaveResult.style.display='none'; wpaicgStop.style.display='inline'; wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,''); queryString +='&source_stream='+formSource+'&nonce='+wpaicgFormData.ajax_nonce; var eventID=Math.ceil(Math.random()*1000000); for (var i=0; i < wpaicgThumbsUpButtons.length; i++){ wpaicgThumbsUpButtons[i].setAttribute('data-eventid', eventID); } for (var i=0; i < wpaicgThumbsDownButtons.length; i++){ wpaicgThumbsDownButtons[i].setAttribute('data-eventid', eventID); } wpaicgStop.setAttribute('data-event',eventID); window['eventGenerator'+eventID]=new EventSource(wpaicgFormData.event + '&' + queryString); if(formSource==='form'){ queryString +='&action=wpaicg_form_log'; }else{ queryString +='&action=wpaicg_prompt_log'; } wpaicg_PlayGround.process(queryString,eventID,wpaicgFormData,formID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicgMaxLines); }} }) } var handleFeedbackButtonClick=function(e){ e.preventDefault(); var button=e.currentTarget; var formID=button.getAttribute('data-id'); var eventID=button.getAttribute('data-eventid'); var feedbackType=button.id.replace('wpaicg-prompt-', ''); var wpaicgFormData=window['wpaicgForm' + formID]; var modal=jQuery('#wpaicg_feedbackModal'); var datasource=wpaicgFormData.datasource; var textareaID=wpaicgFormData.feedbackID; modal.find('.emoji').text(feedbackType=='thumbs_up' ? '👍':'👎'); modal.fadeIn(); jQuery('.wpaicg_feedbackModal-overlay').fadeIn(); var myaction=(datasource==='promptbase') ? 'wpaicg_save_prompt_feedback':'wpaicg_save_feedback'; jQuery('#wpaicg_submitFeedback').off('click').on('click', function(){ modal.find('textarea').attr('id', textareaID); var comment=jQuery('#' + textareaID).val(); console.log('comment: ' + comment); var responseText=wpaicgPlayGround.getContent(wpaicgFormData.response, formID); responseText=responseText.replace(/ /g, ' '); responseText=responseText.replace(//g, '\r\n'); responseText=responseText.replace(/\r\n\r\n/g, '\r\n\r\n'); const xhttp=new XMLHttpRequest(); xhttp.open('POST', wpaicgFormData.ajax); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send('action=' + myaction + '&formID=' + formID + '&feedback=' + feedbackType + '&comment=' + encodeURIComponent(comment) + '&nonce=' + wpaicgFormData.ajax_nonce + '&formname=' + wpaicgFormData.name + '&sourceID=' + wpaicgFormData.sourceID + '&response=' + responseText + '&eventID=' + eventID); xhttp.onreadystatechange=function(oEvent){ if(xhttp.readyState===4){ if(xhttp.status===200){ var response=JSON.parse(xhttp.responseText); if(response.status==='success'){ if(feedbackType==='thumbs_up'){ document.getElementById('wpaicg-prompt-thumbs_up').disabled=true; document.getElementById('wpaicg-prompt-thumbs_down').style.display='none'; }else{ document.getElementById('wpaicg-prompt-thumbs_down').disabled=true; document.getElementById('wpaicg-prompt-thumbs_up').style.display='none'; } jQuery('#' + textareaID).val(''); }else{ alert(response.msg); }}else{ alert('Error: ' + xhttp.status + ' - ' + xhttp.statusText + '\n\n' + xhttp.responseText); } modal.fadeOut(); jQuery('.wpaicg_feedbackModal-overlay').fadeOut(); }} }); jQuery('#closeFeedbackModal').off('click').on('click', function(){ modal.fadeOut(); jQuery('.wpaicg_feedbackModal-overlay').fadeOut(); }); }; for (var k=0; k < wpaicgThumbsUpButtons.length; k++){ wpaicgThumbsUpButtons[k].addEventListener('click', handleFeedbackButtonClick); } for (var k=0; k < wpaicgThumbsDownButtons.length; k++){ wpaicgThumbsDownButtons[k].addEventListener('click', handleFeedbackButtonClick); }} }, process: function(queryString,eventID,wpaicgFormData,formID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicgMaxLines){ var wpaicg_PlayGround=this; var wpaicg_break_newline=wpaicgParams.logged_in==="1" ? '

    ':'\n'; var startTime=new Date(); var wpaicg_response_events=0; var wpaicg_newline_before=false; var prompt_response=''; var wpaicg_limited_token=false; var count_line=0; var wpaicg_limitLines=parseFloat(wpaicgMaxLines.value); var currentContent=''; window['eventGenerator'+eventID].onmessage=function (e){ currentContent=wpaicg_PlayGround.getContent(wpaicgFormData.response,formID); if(e.data==="[LIMITED]"){ wpaicg_limited_token=true; count_line +=1; wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + wpaicg_break_newline); wpaicg_response_events=0; }else{ var result=JSON.parse(e.data); var hasFinishReason=result.choices && result.choices[0] && (result.choices[0].finish_reason==="stop" || result.choices[0].finish_reason==="length") || (result.choices[0].finish_details && result.choices[0].finish_details.type==="stop"); if(hasFinishReason){ count_line +=1; wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + wpaicg_break_newline); wpaicg_response_events=0; } var content_generated=''; if(result.error!==undefined){ content_generated=result.error.message; }else{ content_generated=result.choices[0].delta!==undefined ? (result.choices[0].delta.content!==undefined ? result.choices[0].delta.content:''):result.choices[0].text; } prompt_response +=content_generated; if(content_generated.trim()===''&&content_generated.includes(' ')){ content_generated=' '; } if(wpaicgFormData.response!=='textarea'){ if(content_generated==='\n'){ content_generated='
    '; }} if((content_generated==='\n'||content_generated===' \n'||content_generated==='.\n'||content_generated==='\n\n'||content_generated==='"\n')&&wpaicg_response_events > 0&¤tContent!==''){ if(!wpaicg_newline_before){ wpaicg_newline_before=true; wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + wpaicg_break_newline); }} else if(content_generated.indexOf("\n") > -1&&wpaicg_response_events > 0&¤tContent!==''){ if(!wpaicg_newline_before){ wpaicg_newline_before=true; if(wpaicgFormData.response==='textarea'){ if(!wpaicg_PlayGround.editor(formID)){ content_generated=content_generated.replace(/\n/g,'
    '); }}else{ content_generated=content_generated.replace(/\n/g,'
    '); } wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + content_generated); }} else if(content_generated==='\n'&&wpaicg_response_events===0&¤tContent===''){ }else{ wpaicg_newline_before=false; wpaicg_response_events +=1; wpaicg_PlayGround.setContent(wpaicgFormData.response,formID,currentContent + content_generated); }} if(count_line===wpaicg_limitLines){ if(!wpaicg_limited_token){ let endTime=new Date(); let timeDiff=endTime - startTime; timeDiff=timeDiff / 1000; queryString +='&prompt_id=' + wpaicgFormData.id + '&prompt_name=' + wpaicgFormData.name + '&prompt_response=' + encodeURIComponent(prompt_response) + '&duration=' + timeDiff + '&_wpnonce=' + wpaicgFormData.nonce + '&source_id=' + wpaicgFormData.sourceID + '&eventID=' + eventID; const xhttp=new XMLHttpRequest(); xhttp.open('POST', wpaicgFormData.ajax); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send(queryString); xhttp.onreadystatechange=function (oEvent){ if(xhttp.readyState===4){ }} } wpaicg_PlayGround.eventClose(eventID,wpaicgStop,wpaicgSaveResult,wpaicgGenerateBtn,wpaicg_limited_token); }} }, editor: function (form_id){ var basicEditor=true; if(wpaicg_prompt_logged){ var editor=tinyMCE.get('wpaicg-prompt-result-'+form_id); if(document.getElementById('wp-wpaicg-prompt-result-'+form_id+'-wrap').classList.contains('tmce-active')&&editor){ basicEditor=false; }} return basicEditor; }, setContent: function (type,form_id,value){ if(type==='textarea'){ value=value.replace(/ /g, ' '); if(this.editor(form_id)){ document.getElementById('wpaicg-prompt-result-'+form_id).value=value; }else{ var editor=tinyMCE.get('wpaicg-prompt-result-'+form_id); editor.setContent(value); }}else{ document.getElementById('wpaicg-prompt-result-'+form_id).innerHTML=value; }}, getContent: function (type,form_id){ if(type==='textarea'){ if(this.editor(form_id)){ return document.getElementById('wpaicg-prompt-result-'+form_id).value }else{ var editor=tinyMCE.get('wpaicg-prompt-result-'+form_id); var content=editor.getContent(); content=content.replace(/<\/?p(>|$)/g, ""); return content; }} else return document.getElementById('wpaicg-prompt-result-'+form_id).innerHTML; }, loading: { add: function (btn){ btn.setAttribute('disabled','disabled'); btn.innerHTML +=''; }, remove: function (btn){ btn.removeAttribute('disabled'); btn.removeChild(btn.getElementsByTagName('span')[0]); }}, eventClose: function (eventID,btn,btnResult,btn_generator,wpaicg_limited_token){ btn.style.display='none'; if(!wpaicg_limited_token){ btnResult.style.display='block'; } this.loading.remove(btn_generator); window['eventGenerator'+eventID].close(); }, validate: { email: function (email){ return String(email) .toLowerCase() .match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ ); }, url: function (url){ try { new URL(url); return true; } catch (err){ return false; }} }} wpaicgPlayGround.init(); let wpaicgInit={ wpaicgImageForm: null, wpaicgImageGenerated: null, wpaicgImageGrid: null, wpaicgImageLoading: null, wpaicgImageSaveBtn: null, wpaicgImageMessage: null, wpaicgImageConvertBar: null, wpaicg_image_modal_close: null, wpaicgNumberImages: null, wpaicgImageGenerateBtn: null, wpaicgImageSelectAll: null, wpaicgStartTime: null, init: function (){ this.search(); this.image(); return this; }, search: function(){ let that=this; let wpaicgSearchs=document.getElementsByClassName('wpaicg-search'); if(wpaicgSearchs&&wpaicgSearchs.length){ for(let i=0;i'; for(let i=0; i < wpaicg_response.source.length; i++){ let item=wpaicg_response.source[i]; wpaicgSearchSource.innerHTML +=item; }} }else{ wpaicgSearchResult.innerHTML='

    '+wpaicgParams.languages.no_result+'

    '; }}else{ wpaicgSearchResult.innerHTML='

    '+wpaicg_response.msg+'

    '; }}else{ wpaicgSearchResult.innerHTML='

    '+wpaicgParams.languages.wrong+'

    '; }}else{ wpaicgSearchResult.innerHTML='

    '+wpaicgParams.languages.wrong+'

    '; }} }} }, imageModal: function (id){ var item=document.getElementById('wpaicg-image-item-'+id); var alt=item.querySelectorAll('.wpaicg-image-item-alt')[0].value; var title=item.querySelectorAll('.wpaicg-image-item-title')[0].value; var caption=item.querySelectorAll('.wpaicg-image-item-caption')[0].value; var description=item.querySelectorAll('.wpaicg-image-item-description')[0].value; var url=item.querySelectorAll('input[type=checkbox]')[0].value; document.querySelectorAll('.wpaicg_modal_content')[0].innerHTML=''; document.querySelectorAll('.wpaicg-overlay')[0].style.display='block'; document.querySelectorAll('.wpaicg_modal')[0].style.display='block'; document.querySelectorAll('.wpaicg_modal_title')[0].innerHTML=wpaicgParams.languages.edit_image; var html='
    '; html +='
    '; html +='
    '; html +='

    '; html +='

    '; html +='

    '; html +='

    '; html +=''; html +='
    '; html +='
    '; document.querySelectorAll('.wpaicg_modal_content')[0].innerHTML=html; wpaicgImageCloseModal(); }, image_generator: function(data, start, max, multi_steps,form_action){ let that=this; const xhttp=new XMLHttpRequest(); xhttp.open('POST', wpaicgParams.ajax_url); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send(data); xhttp.onreadystatechange=function(oEvent){ if(xhttp.readyState===4){ if(xhttp.status===200){ var wpaicg_response=this.responseText; res=JSON.parse(wpaicg_response); if(res.status==='success'){ for(var idx=0; idx < res.imgs.length; idx++){ let idImageBox=idx; if(multi_steps){ idImageBox=start -1; } var img=res.imgs[idx]; var html='
    '; if(wpaicgParams.logged_in==='1'){ html +=''; } html +=''; html +=''; html +=''; html +=''; if(wpaicgParams.logged_in==='1'){ html +=''; }else{ html +=''; } html +='
    '; that.wpaicgImageGrid.innerHTML +=html; } if(multi_steps){ if(start===max){ wpaicgImageRmLoading(that.wpaicgImageGenerateBtn); that.wpaicgImageSelectAll.classList.remove('selectall') that.wpaicgImageSelectAll.innerHTML=wpaicgSelectAllText; that.wpaicgImageSelectAll.style.display='block'; that.wpaicgImageLoading.style.display='none'; that.wpaicgImageSaveBtn.style.display='block'; }else{ that.image_generator(data, start+1, max, multi_steps,form_action) }}else{ if(form_action==='wpaicg_image_generator'){ let endTime=new Date(); let timeDiff=endTime - that.wpaicgStartTime; timeDiff=timeDiff/1000; data +='&action=wpaicg_image_log&duration='+timeDiff+'&_wpnonce_image_log='+wpaicgImageNonce+'&shortcode=['+wpaicgImageShortcode+']&source_id='+wpaicgImageSourceID; const xhttp=new XMLHttpRequest(); xhttp.open('POST', wpaicgParams.ajax_url); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send(data); xhttp.onreadystatechange=function (oEvent){ if(xhttp.readyState===4){ }} } wpaicgImageRmLoading(that.wpaicgImageGenerateBtn); that.wpaicgImageSelectAll.classList.remove('selectall') that.wpaicgImageSelectAll.innerHTML=''; that.wpaicgImageSelectAll.style.display='block'; that.wpaicgImageLoading.style.display='none'; that.wpaicgImageSaveBtn.style.display='block'; }}else{ wpaicgImageRmLoading(that.wpaicgImageGenerateBtn); that.wpaicgImageLoading.style.display='none'; let errorMessage=document.createElement('div'); errorMessage.style.color='#f00'; errorMessage.classList.add('wpaicg-image-error'); errorMessage.innerHTML=res.msg; that.wpaicgImageGenerated.prepend(errorMessage); setTimeout(function (){ errorMessage.remove(); },3000); }}else{ that.wpaicgImageLoading.style.display='none'; wpaicgImageRmLoading(that.wpaicgImageGenerateBtn); alert('Something went wrong'); }} }}, save_image: function (items,start){ let that=this; if(start >=items.length){ that.wpaicgImageConvertBar.getElementsByTagName('small')[0].innerHTML=items.length+'/'+items.length; that.wpaicgImageConvertBar.getElementsByTagName('span')[0].style.width='100%'; that.wpaicgImageMessage.innerHTML=wpaicgParams.languages.save_image_success; wpaicgImageRmLoading(that.wpaicgImageSaveBtn); setTimeout(function (){ that.wpaicgImageMessage.innerHTML=''; },2000) }else{ var id=items[start]; var item=document.getElementById('wpaicg-image-item-'+id); var data='action=wpaicg_save_image_media'; data +='&image_alt='+item.querySelectorAll('.wpaicg-image-item-alt')[0].value; data +='&image_title='+item.querySelectorAll('.wpaicg-image-item-title')[0].value; data +='&image_caption='+item.querySelectorAll('.wpaicg-image-item-caption')[0].value; data +='&image_description='+item.querySelectorAll('.wpaicg-image-item-description')[0].value; data +='&image_url='+encodeURIComponent(item.querySelectorAll('.wpaicg-image-item-select')[0].value); data +='&nonce='+wpaicgImageSaveNonce; const xhttp=new XMLHttpRequest(); xhttp.open('POST', wpaicgParams.ajax_url); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send(data); xhttp.onreadystatechange=function(oEvent){ if(xhttp.readyState===4){ if(xhttp.status===200){ var wpaicg_response=this.responseText; res=JSON.parse(wpaicg_response); if(res.status==='success'){ var currentPos=start+1; var percent=Math.ceil(currentPos*100/items.length); that.wpaicgImageConvertBar.getElementsByTagName('small')[0].innerHTML=currentPos+'/'+items.length; that.wpaicgImageConvertBar.getElementsByTagName('span')[0].style.width=percent+'%'; that.save_image(items, start+1); }else{ that.wpaicgImageConvertBar.classList.add('wpaicg_error'); wpaicgImageRmLoading(that.wpaicgImageSaveBtn); alert(res.msg); }}else{ alert(wpaicgParams.languages.wrong); that.wpaicgImageConvertBar.classList.add('wpaicg_error'); wpaicgImageRmLoading(that.wpaicgImageSaveBtn); }} }} }, image: function (){ let that=this; let wpaicgImageForm=document.getElementById('wpaicg-image-generator-form'); if(wpaicgImageForm){ this.wpaicgImageForm=wpaicgImageForm; this.wpaicgImageGenerated=wpaicgImageForm.getElementsByClassName('image-generated')[0]; this.wpaicgImageGrid=wpaicgImageForm.getElementsByClassName('image-grid')[0]; this.wpaicgImageLoading=wpaicgImageForm.getElementsByClassName('image-generate-loading')[0]; this.wpaicgImageSaveBtn=wpaicgImageForm.getElementsByClassName('image-generator-save')[0]; this.wpaicgImageMessage=wpaicgImageForm.getElementsByClassName('wpaicg_message')[0]; this.wpaicgImageConvertBar=wpaicgImageForm.getElementsByClassName('wpaicg-convert-bar')[0]; this.wpaicg_image_modal_close=wpaicgImageForm.getElementsByClassName('wpaicg_image_modal_close'); this.wpaicgNumberImages=wpaicgImageForm.querySelector('select[name=num_images]'); this.wpaicgImageGenerateBtn=wpaicgImageForm.getElementsByClassName('wpaicg_button_generate')[0]; this.wpaicgImageSelectAll=wpaicgImageForm.getElementsByClassName('wpaicg_image_select_all')[0]; this.wpaicgImageSaveBtn.addEventListener('click', function (e){ var items=[]; document.querySelectorAll('.wpaicg-image-item input[type=checkbox]').forEach(function (item){ if(item.checked){ items.push(item.getAttribute('data-id')); }}); if(items.length){ that.wpaicgImageConvertBar.style.display='block'; that.wpaicgImageConvertBar.classList.remove('wpaicg_error'); that.wpaicgImageConvertBar.getElementsByTagName('small')[0].innerHTML='0/' + items.length; that.wpaicgImageConvertBar.getElementsByTagName('span')[0].style.width=0; that.wpaicgImageMessage.innerHTML=''; wpaicgImageLoadingEffect(that.wpaicgImageSaveBtn); that.save_image(items, 0); }else{ alert(wpaicgParams.languages.select_save_error); }}) this.wpaicgImageSelectAll.addEventListener('click', function (e){ if(that.wpaicgImageSelectAll.classList.contains('selectall')){ that.wpaicgImageSelectAll.classList.remove('selectall'); that.wpaicgImageSelectAll.innerHTML=wpaicgSelectAllText; document.querySelectorAll('.wpaicg-image-item input[type=checkbox]').forEach(function (item){ item.checked=false; }) }else{ that.wpaicgImageSelectAll.classList.add('selectall'); that.wpaicgImageSelectAll.innerHTML=wpaicgParams.languages.unselect; document.querySelectorAll('.wpaicg-image-item input[type=checkbox]').forEach(function (item){ item.checked=true; }) }}); wpaicgImageForm.addEventListener('submit', function (e){ e.preventDefault(); var form_action=wpaicgImageForm.querySelectorAll('input[name=action]')[0].value; if(form_action==='wpaicg_image_stable_diffusion'){ that.wpaicgNumberImages=wpaicgImageForm.querySelector('select[name=num_outputs]'); } var num_images=parseInt(that.wpaicgNumberImages.value); if(num_images > 0){ var wpaicg_error=false; if(form_action==='wpaicg_image_stable_diffusion'){ var prompt_strength=parseFloat(document.getElementById('prompt_strength').value); var num_inference_steps=parseFloat(document.getElementById('num_inference_steps').value); var guidance_scale=parseFloat(document.getElementById('guidance_scale').value); if(prompt_strength < 0||prompt_strength > 1){ wpaicg_error=wpaicgParams.languages.prompt_strength }else if(num_inference_steps < 1||num_inference_steps > 500){ wpaicg_error=wpaicgParams.languages.num_inference_steps }else if(guidance_scale < 1||guidance_scale > 20){ wpaicg_error=wpaicgParams.languages.guidance_scale }} if(wpaicg_error){ alert(wpaicg_error); }else{ const queryString=new URLSearchParams(new FormData(wpaicgImageForm)).toString(); that.wpaicgImageSaveBtn.style.display='none'; wpaicgImageLoadingEffect(that.wpaicgImageGenerateBtn); that.wpaicgImageConvertBar.style.display='none'; that.wpaicgImageLoading.style.display='flex'; that.wpaicgImageGrid.innerHTML=''; that.wpaicgImageSelectAll.style.display='none'; let wpaicgImageError=document.getElementsByClassName('wpaicg-image-error'); if(wpaicgImageError.length){ wpaicgImageError[0].remove(); } if(form_action==='wpaicg_image_stable_diffusion'){ that.image_generator(queryString, 1, num_images, true, form_action); }else{ that.wpaicgStartTime=new Date(); that.image_generator(queryString, 1, num_images, false, form_action); }} }else{ alert(wpaicgParams.languages.error_image) } return false; }); }} } window['wpaicgInit']=wpaicgInit.init(); var globalChatbotIdentity=''; var globalClientID=''; function wpaicgChatShortcodeSize(){ var wpaicgWindowWidth=window.innerWidth; var wpaicgWindowHeight=window.innerHeight; var chatShortcodes=document.getElementsByClassName('wpaicg-chat-shortcode'); if(chatShortcodes!==null&&chatShortcodes.length){ for(var i=0;i 0; i--){ messagesBox.removeChild(messages[i]); }} } var chatWidgets=document.getElementsByClassName('wpaicg_chat_widget_content'); if(chatWidgets!==null&&chatWidgets.length){ for (var i=0; i < chatWidgets.length; i++){ var chatWidget=chatWidgets[i]; var messagesBox=chatWidget.getElementsByClassName('wpaicg-chatbox-messages')[0]; clearMessagesExceptFirst(messagesBox); }} var chatShortcodes=document.getElementsByClassName('wpaicg-chat-shortcode'); if(chatShortcodes!==null&&chatShortcodes.length){ for (var i=0; i < chatShortcodes.length; i++){ var chatShortcode=chatShortcodes[i]; var messagesBox=chatShortcode.getElementsByClassName('wpaicg-chat-shortcode-messages')[0]; clearMessagesExceptFirst(messagesBox); }} } function wpaicgFullScreen(btn){ var type=btn.getAttribute('data-type'); if(type==='shortcode'){ var wpaicgChatShortcode=btn.closest('.wpaicg-chat-shortcode'); if(btn.classList.contains('wpaicg-fullscreen-box')){ btn.classList.remove('wpaicg-fullscreen-box'); var chatWidth=wpaicgChatShortcode.getAttribute('data-old-width'); var chatHeight=wpaicgChatShortcode.getAttribute('data-old-height'); wpaicgChatShortcode.setAttribute('data-width', chatWidth); wpaicgChatShortcode.setAttribute('data-height', chatHeight); wpaicgChatShortcode.style.position=''; wpaicgChatShortcode.style.top=''; wpaicgChatShortcode.style.left=''; wpaicgChatShortcode.style.zIndex=''; wpaicgChatShortcode.classList.remove('wpaicg-fullscreened'); }else{ var newChatBoxWidth=document.body.offsetWidth; var chatWidth=wpaicgChatShortcode.getAttribute('data-width'); var chatHeight=wpaicgChatShortcode.getAttribute('data-height'); wpaicgChatShortcode.setAttribute('data-old-width', chatWidth); wpaicgChatShortcode.setAttribute('data-old-height', chatHeight); wpaicgChatShortcode.setAttribute('data-width', newChatBoxWidth); wpaicgChatShortcode.setAttribute('data-height', '100%'); btn.classList.add('wpaicg-fullscreen-box'); wpaicgChatShortcode.style.position='fixed'; wpaicgChatShortcode.style.top=0; wpaicgChatShortcode.style.left=0; wpaicgChatShortcode.style.zIndex=999999999; wpaicgChatShortcode.classList.add('wpaicg-fullscreened'); } wpaicgChatShortcodeSize(); }else{ var wpaicgWidgetContent=btn.closest('.wpaicg_chat_widget_content'); var chatbox=wpaicgWidgetContent.getElementsByClassName('wpaicg-chatbox')[0]; if(btn.classList.contains('wpaicg-fullscreen-box')){ btn.classList.remove('wpaicg-fullscreen-box'); var chatWidth=chatbox.getAttribute('data-old-width'); var chatHeight=chatbox.getAttribute('data-old-height'); chatbox.setAttribute('data-width', chatWidth); chatbox.setAttribute('data-height', chatHeight); wpaicgWidgetContent.style.position='absolute'; wpaicgWidgetContent.style.bottom=''; wpaicgWidgetContent.style.left=''; wpaicgWidgetContent.classList.remove('wpaicg-fullscreened'); }else{ var newChatBoxWidth=document.body.offsetWidth; var chatWidth=chatbox.getAttribute('data-width'); var chatHeight=chatbox.getAttribute('data-height'); chatbox.setAttribute('data-old-width', chatWidth); chatbox.setAttribute('data-old-height', chatHeight); chatbox.setAttribute('data-width', newChatBoxWidth); chatbox.setAttribute('data-height', '100%'); btn.classList.add('wpaicg-fullscreen-box'); wpaicgWidgetContent.style.position='fixed'; wpaicgWidgetContent.style.bottom=0; wpaicgWidgetContent.style.left=0; wpaicgWidgetContent.classList.add('wpaicg-fullscreened'); } wpaicgChatBoxSize(); }} if(wpaicgChatFullScreens.length){ for(var i=0; i < wpaicgChatFullScreens.length; i++){ var wpaicgChatFullScreen=wpaicgChatFullScreens[i]; wpaicgChatFullScreen.addEventListener('click', function (e){ wpaicgFullScreen(e.currentTarget); }) }} window.addEventListener('resize', function (){ wpaicgChatBoxSize(); wpaicgChatShortcodeSize(); if(wpaicg_chat_widgets!==null&&wpaicg_chat_widgets.length){ for(var i=0;i/g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function wpaicgstartChatRecording(){ let constraints={audio: true, video: false} navigator.mediaDevices.getUserMedia(constraints).then(function (stream){ wpaicgaudioContext=new wpaicgChatAudioContext(); wpaicgChatStream=stream; wpaicgInput=wpaicgaudioContext.createMediaStreamSource(stream); wpaicgChatRec=new Recorder(wpaicgInput, {numChannels: 1}); wpaicgChatRec.record(); }) } function wpaicgstopChatRecording(mic){ wpaicgChatRec.stop(); wpaicgChatStream.getAudioTracks()[0].stop(); wpaicgChatRec.exportWAV(function (blob){ let type=mic.getAttribute('data-type'); let parentChat; let chatContent; let chatTyping; if(type==='widget'){ parentChat=mic.closest('.wpaicg-chatbox'); chatContent=parentChat.querySelectorAll('.wpaicg-chatbox-content')[0]; chatTyping=parentChat.querySelectorAll('.wpaicg-chatbox-typing')[0]; }else{ parentChat=mic.closest('.wpaicg-chat-shortcode'); chatContent=parentChat.querySelectorAll('.wpaicg-chat-shortcode-content')[0]; chatTyping=parentChat.querySelectorAll('.wpaicg-chat-shortcode-typing')[0]; } wpaicgSendChatMessage(parentChat, chatTyping, type, blob); }); } function generateRandomString(length){ let result=''; let characters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let charactersLength=characters.length; for (let i=0; i < length; i++){ result +=characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } function wpaicgSendChatMessage(chat, typing, type, blob){ let wpaicg_box_typing=typing; let wpaicg_ai_thinking, wpaicg_messages_box, class_user_item, class_ai_item; let wpaicgMessage=''; let wpaicgData=new FormData(); let wpaicg_you=chat.getAttribute('data-you') + ':'; let wpaicg_ai_name=chat.getAttribute('data-ai-name') + ':'; let wpaicg_nonce=chat.getAttribute('data-nonce'); let wpaicg_use_avatar=parseInt(chat.getAttribute('data-use-avatar')); let wpaicg_bot_id=parseInt(chat.getAttribute('data-bot-id')); let wpaicg_user_avatar=chat.getAttribute('data-user-avatar'); let wpaicg_ai_avatar=chat.getAttribute('data-ai-avatar'); let wpaicg_user_bg=chat.getAttribute('data-user-bg-color'); let wpaicg_font_size=chat.getAttribute('data-fontsize'); let wpaicg_speech=chat.getAttribute('data-speech'); let wpaicg_voice=chat.getAttribute('data-voice'); let elevenlabs_model=chat.getAttribute('data-elevenlabs-model'); if(elevenlabs_model===null||elevenlabs_model===undefined){ elevenlabs_model=chat.getAttribute('data-elevenlabs_model'); } let elevenlabs_voice=chat.getAttribute('data-elevenlabs-voice'); if(elevenlabs_voice===null||elevenlabs_voice===undefined){ elevenlabs_voice=chat.getAttribute('data-elevenlabs_voice'); } let wpaicg_voice_error=chat.getAttribute('data-voice-error'); let url=chat.getAttribute('data-url'); let post_id=chat.getAttribute('data-post-id'); let wpaicg_ai_bg=chat.getAttribute('data-ai-bg-color'); let wpaicg_font_color=chat.getAttribute('data-color'); let voice_service=chat.getAttribute('data-voice_service'); let voice_language=chat.getAttribute('data-voice_language'); let voice_name=chat.getAttribute('data-voice_name'); let voice_device=chat.getAttribute('data-voice_device'); let openai_model=chat.getAttribute('data-openai_model'); let openai_voice=chat.getAttribute('data-openai_voice'); let openai_output_format=chat.getAttribute('data-openai_output_format'); let openai_voice_speed=chat.getAttribute('data-openai_voice_speed'); let openai_stream_nav=chat.getAttribute('data-openai_stream_nav'); let voice_speed=chat.getAttribute('data-voice_speed'); let voice_pitch=chat.getAttribute('data-voice_pitch'); var chat_pdf=chat.getAttribute('data-pdf'); if(type==='widget'){ wpaicg_ai_thinking=chat.getElementsByClassName('wpaicg-bot-thinking')[0]; wpaicg_messages_box=chat.getElementsByClassName('wpaicg-chatbox-messages')[0]; class_user_item='wpaicg-chat-user-message'; class_ai_item='wpaicg-chat-ai-message'; }else{ wpaicg_ai_thinking=chat.getElementsByClassName('wpaicg-bot-thinking')[0]; wpaicg_messages_box=chat.getElementsByClassName('wpaicg-chat-shortcode-messages')[0]; class_user_item='wpaicg-user-message'; class_ai_item='wpaicg-ai-message'; } if(wpaicg_use_avatar){ wpaicg_you=''; wpaicg_ai_name=''; } wpaicg_ai_thinking.style.display='block'; let wpaicg_question=wpaicgescapeHtml(wpaicg_box_typing.value); wpaicgMessage +='
  • '; wpaicgMessage +='' + wpaicg_you + ''; wpaicgData.append('_wpnonce', wpaicg_nonce); wpaicgData.append('post_id', post_id); if(chat_pdf&&chat_pdf!==null){ wpaicgData.append('namespace', chat_pdf); } wpaicgData.append('url', url); if(type==='widget'){ wpaicgData.append('action', 'wpaicg_chatbox_message'); }else{ wpaicgData.append('action', 'wpaicg_chat_shortcode_message'); } if(blob!==undefined){ let url=URL.createObjectURL(blob); wpaicgMessage +=''; wpaicgData.append('audio', blob, 'wpaicg-chat-recording.wav'); }else if(wpaicg_question!==''){ wpaicgData.append('message', wpaicg_question); wpaicgMessage +=wpaicg_question.replace(/\n/g,'
    '); } wpaicgData.append('bot_id',wpaicg_bot_id); wpaicgMessage +='
  • '; wpaicg_messages_box.innerHTML +=wpaicgMessage; wpaicg_messages_box.scrollTop=wpaicg_messages_box.scrollHeight; let chat_type=chat.getAttribute('data-type'); let stream_nav; let chatbot_identity; if(wpaicg_bot_id&&wpaicg_bot_id!=="0"){ stream_nav=openai_stream_nav; chatbot_identity='custom_bot_' + wpaicg_bot_id; }else{ if(chat_type==="shortcode"){ stream_nav=chat.getAttribute('data-openai_stream_nav'); chatbot_identity='shortcode'; }else if(chat_type==="widget"){ stream_nav=chat.getAttribute('data-openai_stream_nav'); chatbot_identity='widget'; }} wpaicgData.append('chatbot_identity', chatbot_identity); let clientID=localStorage.getItem('wpaicg_chat_client_id'); if(!clientID){ clientID=generateRandomString(10); localStorage.setItem('wpaicg_chat_client_id', clientID); } wpaicgData.append('wpaicg_chat_client_id', clientID); globalChatbotIdentity=chatbot_identity; globalClientID=clientID; function updateChatHistory(message, sender){ let chatHistoryKey='wpaicg_chat_history_' + chatbot_identity + '_' + clientID; let chatHistory=localStorage.getItem(chatHistoryKey); chatHistory=chatHistory ? JSON.parse(chatHistory):[]; let formattedMessage=(sender==='user' ? "Human: ":"AI: ") + message.replace(/\n/g, ' ').trim(); chatHistory.push(formattedMessage); if(chatHistory.length > 5){ chatHistory=chatHistory.slice(-5); } let totalCharCount=chatHistory.reduce((total, msg)=> total + msg.length, 0); if(totalCharCount > 8000){ chatHistory=[]; } localStorage.setItem(chatHistoryKey, JSON.stringify(chatHistory)); } if(stream_nav==="1"){ updateChatHistory(wpaicg_question, 'user'); wpaicgData.append('wpaicg_chat_history', localStorage.getItem('wpaicg_chat_history_' + chatbot_identity + '_' + clientID)); handleStreaming(wpaicgData,wpaicg_messages_box,wpaicg_box_typing,wpaicg_ai_thinking,class_ai_item,chat, chatbot_identity, clientID, wpaicg_use_avatar, wpaicg_ai_avatar); }else{ updateChatHistory(wpaicg_question, 'user'); wpaicgData.append('wpaicg_chat_history', localStorage.getItem('wpaicg_chat_history_' + chatbot_identity + '_' + clientID)); const xhttp=new XMLHttpRequest(); wpaicg_box_typing.value=''; xhttp.open('POST', wpaicgParams.ajax_url, true); xhttp.send(wpaicgData); xhttp.onreadystatechange=function (oEvent){ if(xhttp.readyState===4){ var wpaicg_message=''; var wpaicg_response_text=''; var wpaicg_randomnum=Math.floor((Math.random() * 100000) + 1); if(xhttp.status===200){ var wpaicg_response=this.responseText; if(wpaicg_response!==''){ wpaicg_response=JSON.parse(wpaicg_response); wpaicg_ai_thinking.style.display='none' if(wpaicg_response.status==='success'){ wpaicg_response_text=wpaicg_response.data; wpaicg_message='
  • ' + wpaicg_ai_name + ''; }else{ wpaicg_response_text=wpaicg_response.msg; wpaicg_message='

  • ' + wpaicg_ai_name + ''; }} }else{ wpaicg_message='

  • ' + wpaicg_ai_name + ''; wpaicg_response_text='Something went wrong. Please clear your cache and try again.'; clearChatHistory(); } if(wpaicg_response_text==='null'||wpaicg_response_text===null){ wpaicg_response_text='The model predicted a completion that begins with a stop sequence, resulting in no output. Consider adjusting your prompt or stop sequences.'; } updateChatHistory(wpaicg_response_text, 'ai'); if(wpaicg_response_text!==''&&wpaicg_message!==''){ if(parseInt(wpaicg_speech)==1){ if(voice_service==='google'){ wpaicg_ai_thinking.style.display='block'; let speechData=new FormData(); speechData.append('nonce', wpaicg_nonce); speechData.append('action', 'wpaicg_google_speech'); speechData.append('language', voice_language); speechData.append('name', voice_name); speechData.append('device', voice_device); speechData.append('speed', voice_speed); speechData.append('pitch', voice_pitch); speechData.append('text', wpaicg_response_text); var speechRequest=new XMLHttpRequest(); speechRequest.open("POST", wpaicgParams.ajax_url); speechRequest.onload=function (){ var result=speechRequest.responseText; try { result=JSON.parse(result); if(result.status==='success'){ var byteCharacters=atob(result.audio); const byteNumbers=new Array(byteCharacters.length); for (let i=0; i < byteCharacters.length; i++){ byteNumbers[i]=byteCharacters.charCodeAt(i); } const byteArray=new Uint8Array(byteNumbers); const blob=new Blob([byteArray], {type: 'audio/mp3'}); const blobUrl=URL.createObjectURL(blob); wpaicg_message +=''; wpaicg_message +='

  • '; wpaicg_ai_thinking.style.display='none'; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); }else{ var errorMessageDetail='Google: ' + result.msg; wpaicg_ai_thinking.style.display='none'; if(parseInt(wpaicg_voice_error)!==1){ wpaicg_message +='' + errorMessageDetail + ''; } else if(typeof wpaicg_response!=='undefined'&&typeof wpaicg_response.log!=='undefined'&&wpaicg_response.log!==''){ var speechLogMessage=new FormData(); speechLogMessage.append('nonce', wpaicg_nonce); speechLogMessage.append('log_id', wpaicg_response.log); speechLogMessage.append('message', errorMessageDetail); speechLogMessage.append('action', 'wpaicg_speech_error_log'); var speechErrorRequest=new XMLHttpRequest(); speechErrorRequest.open("POST", wpaicgParams.ajax_url); speechErrorRequest.send(speechLogMessage); } wpaicg_message +='

    '; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); }} catch (errorSpeech){ }} speechRequest.send(speechData); } else if(voice_service==='openai'){ let speechData=new FormData(); speechData.append('action', 'wpaicg_openai_speech'); speechData.append('nonce', wpaicg_nonce); speechData.append('text', wpaicg_response_text); speechData.append('model', openai_model); speechData.append('voice', openai_voice); speechData.append('output_format', openai_output_format); speechData.append('speed', openai_voice_speed); wpaicg_ai_thinking.style.display='block'; var speechRequest=new XMLHttpRequest(); speechRequest.open("POST", wpaicgParams.ajax_url); speechRequest.responseType="arraybuffer"; speechRequest.onload=function (){ if(speechRequest.status===200){ wpaicg_ai_thinking.style.display='none'; const audioData=speechRequest.response; const blobMimeType=getBlobMimeType(openai_output_format); const blob=new Blob([audioData], { type: blobMimeType }); const blobUrl=URL.createObjectURL(blob); const audio=new Audio(blobUrl); audio.play().catch(e=> console.error('Playback error:', e)); wpaicg_message +=''; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); }else{ wpaicg_ai_thinking.style.display='none'; console.error('Error generating speech with OpenAI:', speechRequest.statusText); wpaicg_message +='Error generating speech with OpenAI'; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); }}; speechRequest.onerror=function (){ wpaicg_ai_thinking.style.display='none'; console.error('Network error during speech generation with OpenAI'); wpaicg_message +='Network error during speech generation'; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); }; speechRequest.send(speechData); function getBlobMimeType(format){ switch (format){ case 'opus': return 'audio/opus'; case 'aac': return 'audio/aac'; case 'flac': return 'audio/flac'; default: return 'audio/mpeg'; }} }else{ let speechData=new FormData(); speechData.append('nonce', wpaicg_nonce); speechData.append('message', wpaicg_response_text); speechData.append('voice', wpaicg_voice); speechData.append('elevenlabs_model', elevenlabs_model); speechData.append('action', 'wpaicg_text_to_speech'); wpaicg_ai_thinking.style.display='block'; var speechRequest=new XMLHttpRequest(); speechRequest.open("POST", wpaicgParams.ajax_url); speechRequest.responseType="arraybuffer"; speechRequest.onload=function (){ wpaicg_ai_thinking.style.display='none'; var blob=new Blob([speechRequest.response], {type: "audio/mpeg"}); var fr=new FileReader(); fr.onload=function (){ var fileText=this.result; try { var errorMessage=JSON.parse(fileText); var errorMessageDetail='ElevenLabs: ' + errorMessage.detail.message; if(parseInt(wpaicg_voice_error)!==1){ wpaicg_message +='' + errorMessageDetail + ''; }else if(typeof wpaicg_response!=='undefined'&&typeof wpaicg_response.log!=='undefined'&&wpaicg_response.log!==''){ var speechLogMessage=new FormData(); speechLogMessage.append('nonce', wpaicg_nonce); speechLogMessage.append('log_id', wpaicg_response.log); speechLogMessage.append('message', errorMessageDetail); speechLogMessage.append('action', 'wpaicg_speech_error_log'); var speechErrorRequest=new XMLHttpRequest(); speechErrorRequest.open("POST", wpaicgParams.ajax_url); speechErrorRequest.send(speechLogMessage); } wpaicg_message +='

    '; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); } catch (errorBlob){ var blobUrl=URL.createObjectURL(blob); wpaicg_message +=''; wpaicg_message +='

    '; wpaicgWriteMessage(wpaicg_messages_box, wpaicg_message, wpaicg_randomnum, wpaicg_response_text); }} fr.readAsText(blob); } speechRequest.send(speechData); }}else{ wpaicg_message +='

    '; wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text); }} }} }} function handleStreaming(wpaicgData, wpaicg_messages_box, wpaicg_box_typing, wpaicg_ai_thinking, class_ai_item, chat, chatbot_identity, clientID, wpaicg_use_avatar, wpaicg_ai_avatar){ let wpaicg_ai_name=wpaicg_use_avatar ? '':chat.getAttribute('data-ai-name') + ':'; let wpaicg_font_size=chat.getAttribute('data-fontsize'); let wpaicg_ai_bg=chat.getAttribute('data-ai-bg-color'); let wpaicg_font_color=chat.getAttribute('data-color'); wpaicg_box_typing.value=''; const queryString=new URLSearchParams(wpaicgData).toString(); const urlWithParams=wpaicgParams.ajax_url + '?' + queryString; const eventSource=new EventSource(urlWithParams); let wpaicg_randomnum=Math.floor((Math.random() * 100000) + 1); let chatids='wpaicg-chat-message-' + wpaicg_randomnum; let wpaicg_message = '
  • ' + wpaicg_ai_name + '

  • '; function updateChatHistory(message, sender){ let chatHistoryKey='wpaicg_chat_history_' + chatbot_identity + '_' + clientID; let chatHistory=localStorage.getItem(chatHistoryKey); chatHistory=chatHistory ? JSON.parse(chatHistory):[]; let formattedMessage=(sender==='user' ? "Human: ":"AI: ") + message.replace(/\n/g, ' ').trim(); chatHistory.push(formattedMessage); localStorage.setItem(chatHistoryKey, JSON.stringify(chatHistory)); } let dataQueue=[]; let isProcessing=false; function typeWriter(text, i, elementId, callback){ toggleBlinkingCursor(false); if(i < text.length){ var charToAdd=text.charAt(i); if(charToAdd==='<'){ var tag=text.slice(i, i+4); if(tag==='
    '){ jQuery('#' + elementId).append(tag); i +=4; }else{ jQuery('#' + elementId).append(charToAdd); i++; }}else{ jQuery('#' + elementId).append(charToAdd); i++; } setTimeout(function(){ typeWriter(text, i, elementId, callback); }, 1); }else if(callback){ callback(); scrollToBottom(); }} function scrollToBottom(){ wpaicg_messages_box.scrollTop=wpaicg_messages_box.scrollHeight; } let completeAIResponse=''; function processQueue(){ if(dataQueue.length > 0&&!isProcessing){ isProcessing=true; let nextChunk=dataQueue.shift(); typeWriter(nextChunk, 0, chatids, function(){ isProcessing=false; processQueue(); }); }else{ toggleBlinkingCursor(false); }} eventSource.onopen=function(e){ toggleBlinkingCursor(true); wpaicg_messages_box.innerHTML +=wpaicg_message; }; eventSource.onmessage=function(e){ wpaicg_ai_thinking.style.display='none'; var resultData=JSON.parse(e.data); if(resultData.tokenLimitReached){ var tokenLimitMessage='' + resultData.msg + ''; document.getElementById(chatids).innerHTML=tokenLimitMessage; wpaicg_ai_thinking.style.display='none'; eventSource.close(); toggleBlinkingCursor(false); return; } if(resultData.messageFlagged){ var tokenLimitMessage='' + resultData.msg + ''; document.getElementById(chatids).innerHTML=tokenLimitMessage; wpaicg_ai_thinking.style.display='none'; eventSource.close(); toggleBlinkingCursor(false); return; } if(resultData.ipBanned){ var tokenLimitMessage='' + resultData.msg + ''; document.getElementById(chatids).innerHTML=tokenLimitMessage; wpaicg_ai_thinking.style.display='none'; eventSource.close(); toggleBlinkingCursor(false); return; } if(resultData.modflag){ var tokenLimitMessage='' + resultData.msg + ''; document.getElementById(chatids).innerHTML=tokenLimitMessage; wpaicg_ai_thinking.style.display='none'; eventSource.close(); toggleBlinkingCursor(false); return; } var hasFinishReason=resultData.choices && resultData.choices[0] && (resultData.choices[0].finish_reason==="stop" || resultData.choices[0].finish_reason==="length")|| (resultData.choices[0].finish_details && resultData.choices[0].finish_details.type==="stop"); if(hasFinishReason||e.data==="[DONE]"){ eventSource.close(); toggleBlinkingCursor(false); updateChatHistory(completeAIResponse, 'ai'); }else{ var result=resultData; if(result.error!==undefined){ dataQueue.push(result.error.message); }else{ var content_generated=result.choices[0].delta!==undefined ? (result.choices[0].delta.content!==undefined ? result.choices[0].delta.content:''):result.choices[0].text; content_generated=formatContent(content_generated); dataQueue.push(content_generated); completeAIResponse +=content_generated; } processQueue(); scrollToBottom(); }}; eventSource.onerror=function(error){ clearChatHistory(); console.log("EventSource failed: ", error); toggleBlinkingCursor(false); }; function formatContent(text){ return text.replace(/(?:\r\n|\r|\n)/g, '
    '); } function toggleBlinkingCursor(isVisible){ const cursorElement=jQuery('#' + chatids + ' .blinking-cursor'); if(isVisible){ if(cursorElement.length===0){ jQuery('#' + chatids).append('|'); }}else{ cursorElement.remove(); }} } function wpaicgWriteMessage(wpaicg_messages_box,wpaicg_message,wpaicg_randomnum,wpaicg_response_text){ wpaicg_messages_box.innerHTML +=wpaicg_message; var wpaicg_current_message=document.getElementById('wpaicg-chat-message-' + wpaicg_randomnum); var parentMessage=wpaicg_current_message.parentElement; var audio=parentMessage.getElementsByTagName('audio'); if(audio&&audio.length){ audio[0].play(); } function wpaicgMarkdownToHTML(inputText){ inputText=inputText.replace(/\*\*([^\*]+)\*\*/g, '$1'); inputText=inputText.replace(/_([^_]+)_/g, '$1'); inputText=inputText.replace(/\*([^\*]+)\*/g, '$1'); inputText=inputText.replace(/__([^_]+)__/g, '$1'); inputText=inputText.replace(/^\s*\n\* /gm, '
      \n* '); inputText=inputText.replace(/^(\*)(.+)/gm, '
    • $2
    • '); inputText=inputText.replace(/<\/li>\n(
    • )/g, '
    • $1'); inputText=inputText.replace(/<\/li>(?!\n<)/gm, '\n
    '); inputText=inputText.replace(/^\s*\n\d\. /gm, '
      \n1. '); inputText=inputText.replace(/^(\d\.)(.+)/gm, '
    1. $2
    2. '); inputText=inputText.replace(/<\/li>\n(
    3. )/g, '
    4. $1'); inputText=inputText.replace(/<\/li>(?!\n<)/gm, '\n
    '); inputText=inputText.replace(/~~(.*?)~~/g, '$1'); inputText=inputText.replace(/^\s*>\s?(.*)/gm, '
    $1
    '); inputText=inputText.replace(/`([^`]+)`/g, '$1'); inputText=inputText.replace(/^\s*[-\*_]{3,}\s*$/gm, '
    '); return inputText; } function wpaicgLinkify(inputText){ var replacedText, replacePattern1, replacePattern2, replacePattern3; replacePattern1=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; replacedText=inputText.replace(replacePattern1, '$1'); replacePattern2=/(^|[^\/])(www\.[\S]+(\b|$))/gim; replacedText=replacedText.replace(replacePattern2, '$1$2'); replacePattern3=/(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim; replacedText=replacedText.replace(replacePattern3, '$1'); return replacedText; } if(wpaicg_response_text!==''){ wpaicg_response_text=wpaicg_response_text.trim(); } wpaicg_response_text=wpaicg_response_text.replace(/\n/g, '≈'); var i=0; var wpaicg_speed=1; function wpaicg_typeWriter(){ if(i < wpaicg_response_text.length){ if(wpaicg_response_text.charAt(i)==='≈'){ wpaicg_current_message.innerHTML +='
    '; }else{ wpaicg_current_message.innerHTML +=wpaicg_response_text.charAt(i); } i++; setTimeout(wpaicg_typeWriter, wpaicg_speed); wpaicg_messages_box.scrollTop=wpaicg_messages_box.scrollHeight; }else{ wpaicg_current_message.innerHTML=wpaicgMarkdownToHTML(wpaicg_current_message.innerHTML); wpaicg_current_message.innerHTML=wpaicgLinkify(wpaicg_current_message.innerHTML); wpaicg_current_message.innerHTML=wpaicg_current_message.innerHTML.replace(/```([\s\S]*?)```/g,'$1'); }} wpaicg_typeWriter(); } function wpaicgMicEvent(mic){ if(mic.classList.contains('wpaicg-recording')){ mic.innerHTML=''; mic.innerHTML=wpaicgMicIcon; mic.classList.remove('wpaicg-recording'); wpaicgstopChatRecording(mic) }else{ let checkRecording=document.querySelectorAll('.wpaicg-recording'); if(checkRecording&&checkRecording.length){ alert('Please finish previous recording'); }else{ mic.innerHTML=''; mic.innerHTML=wpaicgStopIcon; mic.classList.add('wpaicg-recording'); wpaicgstartChatRecording(); }} } if(wpaicgChatTyping&&wpaicgChatTyping.length){ for (let i=0; i < wpaicgChatTyping.length; i++){ wpaicgChatTyping[i].addEventListener('keyup', function (event){ if((event.which===13||event.keyCode===13)&&!event.shiftKey){ let parentChat=wpaicgChatTyping[i].closest('.wpaicg-chatbox'); let chatTyping=parentChat.querySelectorAll('.wpaicg-chatbox-typing')[0]; wpaicgSendChatMessage(parentChat, chatTyping, 'widget'); }}) }} if(wpaicgShortcodeTyping&&wpaicgShortcodeTyping.length){ for (let i=0; i < wpaicgShortcodeTyping.length; i++){ wpaicgShortcodeTyping[i].addEventListener('keyup', function (event){ if((event.which===13||event.keyCode===13)&&!event.shiftKey){ let parentChat=wpaicgShortcodeTyping[i].closest('.wpaicg-chat-shortcode'); let chatTyping=parentChat.querySelectorAll('.wpaicg-chat-shortcode-typing')[0]; wpaicgSendChatMessage(parentChat, chatTyping, 'shortcode'); }}) }} if(wpaicgChatSend&&wpaicgChatSend.length){ for (let i=0; i < wpaicgChatSend.length; i++){ wpaicgChatSend[i].addEventListener('click', function (event){ let parentChat=wpaicgChatSend[i].closest('.wpaicg-chatbox'); let chatTyping=parentChat.querySelectorAll('.wpaicg-chatbox-typing')[0]; wpaicgSendChatMessage(parentChat, chatTyping, 'widget'); }) }} if(wpaicgShortcodeSend&&wpaicgShortcodeSend.length){ for (let i=0; i < wpaicgShortcodeSend.length; i++){ wpaicgShortcodeSend[i].addEventListener('click', function (event){ let parentChat=wpaicgShortcodeSend[i].closest('.wpaicg-chat-shortcode'); let chatTyping=parentChat.querySelectorAll('.wpaicg-chat-shortcode-typing')[0]; wpaicgSendChatMessage(parentChat, chatTyping, 'shortcode'); }) }} if(wpaicgMicBtns&&wpaicgMicBtns.length){ for (let i=0; i < wpaicgMicBtns.length; i++){ wpaicgMicBtns[i].addEventListener('click', function (){ wpaicgMicEvent(wpaicgMicBtns[i]); }); }} } wpaicgChatInit(); (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Recorder=f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oa;)o(e,r=n[a++])&&(~u(p,r)||f(p,r));return p}},function(t,n,r){var e=r(10),o=r(55),i=r(57);r=function(t){return function(n,r,u){var c,f=e(n),a=i(f),p=o(u,a);if(t&&r!=r){for(;p"+t+""}var u,c=e(42),f=e(64),a=e(59),p=e(48),s=e(66),l=e(39),y=(e=e(47),"prototype"),v="script",d=e("IE_PROTO"),b=function(){try{u=new ActiveXObject("htmlfile")}catch(t){}var t;b="undefined"==typeof document||document.domain&&u?function(t){t.write(i("")),t.close();var n=t.parentWindow.Object;return t=null,n}(u):((t=l("iframe")).style.display="none",s.appendChild(t),t.src=String("javascript:"),(t=t.contentWindow.document).open(),t.write(i("document.F=Object")),t.close(),t.F);for(var n=a.length;n--;)delete b[y][a[n]];return b()};p[d]=!0,n.exports=Object.create||function(n,r){var e;return null!==n?(o[y]=c(n),e=new o,o[y]=null,e[d]=n):e=b(),r===t?e:f(e,r)}},function(t,n,r){var e=r(5),o=r(41),i=r(42),u=r(10),c=r(65);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=u(n),f=c(n),a=f.length,p=0;p3&&void 0!==arguments[3]?arguments[3]:10;const u=n[t];if(!e(o))return;if(!r(i))return;if("function"!=typeof c)return void console.error("The hook callback must be a function.");if("number"!=typeof s)return void console.error("If specified, the hook priority must be a number.");const l={callback:c,priority:s,namespace:i};if(u[o]){const n=u[o].handlers;let t;for(t=n.length;t>0&&!(s>=n[t-1].priority);t--);t===n.length?n[t]=l:n.splice(t,0,l),u.__current.forEach((n=>{n.name===o&&n.currentIndex>=t&&n.currentIndex++}))}else u[o]={handlers:[l],runs:0};"hookAdded"!==o&&n.doAction("hookAdded",o,i,c,s)}};var i=function(n,t){let o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(i,c){const s=n[t];if(!e(i))return;if(!o&&!r(c))return;if(!s[i])return 0;let u=0;if(o)u=s[i].handlers.length,s[i]={runs:s[i].runs,handlers:[]};else{const n=s[i].handlers;for(let t=n.length-1;t>=0;t--)n[t].namespace===c&&(n.splice(t,1),u++,s.__current.forEach((n=>{n.name===i&&n.currentIndex>=t&&n.currentIndex--})))}return"hookRemoved"!==i&&n.doAction("hookRemoved",i,c),u}};var c=function(n,t){return function(r,e){const o=n[t];return void 0!==e?r in o&&o[r].handlers.some((n=>n.namespace===e)):r in o}};var s=function(n,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(e){const o=n[t];o[e]||(o[e]={handlers:[],runs:0}),o[e].runs++;const i=o[e].handlers;for(var c=arguments.length,s=new Array(c>1?c-1:0),u=1;u=0),s.type){case"b":e=parseInt(e,10).toString(2);break;case"c":e=String.fromCharCode(parseInt(e,10));break;case"d":case"i":e=parseInt(e,10);break;case"j":e=JSON.stringify(e,null,s.width?parseInt(s.width):0);break;case"e":e=s.precision?parseFloat(e).toExponential(s.precision):parseFloat(e).toExponential();break;case"f":e=s.precision?parseFloat(e).toFixed(s.precision):parseFloat(e);break;case"g":e=s.precision?String(Number(e.toPrecision(s.precision))):parseFloat(e);break;case"o":e=(parseInt(e,10)>>>0).toString(8);break;case"s":e=String(e),e=s.precision?e.substring(0,s.precision):e;break;case"t":e=String(!!e),e=s.precision?e.substring(0,s.precision):e;break;case"T":e=Object.prototype.toString.call(e).slice(8,-1).toLowerCase(),e=s.precision?e.substring(0,s.precision):e;break;case"u":e=parseInt(e,10)>>>0;break;case"v":e=e.valueOf(),e=s.precision?e.substring(0,s.precision):e;break;case"x":e=(parseInt(e,10)>>>0).toString(16);break;case"X":e=(parseInt(e,10)>>>0).toString(16).toUpperCase()}i.json.test(s.type)?g+=e:(!i.number.test(s.type)||p&&!s.sign?f="":(f=p?"+":"-",e=e.toString().replace(i.sign,"")),l=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",c=s.width-(f+e).length,u=s.width&&c>0?l.repeat(c):"",g+=s.align?f+e+u:"0"===l?f+u+e:u+f+e)}return g}var u=Object.create(null);function l(t){if(u[t])return u[t];for(var n,e=t,r=[],o=0;e;){if(null!==(n=i.text.exec(e)))r.push(n[0]);else if(null!==(n=i.modulo.exec(e)))r.push("%");else{if(null===(n=i.placeholder.exec(e)))throw new SyntaxError("[sprintf] unexpected placeholder");if(n[2]){o|=1;var a=[],s=n[2],l=[];if(null===(l=i.key.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(l[1]);""!==(s=s.substring(l[0].length));)if(null!==(l=i.key_access.exec(s)))a.push(l[1]);else{if(null===(l=i.index_access.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(l[1])}n[2]=a}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:n[0],param_no:n[1],keys:n[2],sign:n[3],pad_char:n[4],align:n[5],width:n[6],precision:n[7],type:n[8]})}e=e.substring(n[0].length)}return u[t]=r}n.sprintf=o,n.vsprintf=a,"undefined"!=typeof window&&(window.sprintf=o,window.vsprintf=a,void 0===(r=function(){return{sprintf:o,vsprintf:a}}.call(n,e,n,t))||(t.exports=r))}()}},n={};function e(r){var i=n[r];if(void 0!==i)return i.exports;var o=n[r]={exports:{}};return t[r](o,o.exports,e),o.exports}e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},e.d=function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};!function(){"use strict";e.r(r),e.d(r,{__:function(){return j},_n:function(){return T},_nx:function(){return D},_x:function(){return L},createI18n:function(){return y},defaultI18n:function(){return m},getLocaleData:function(){return w},hasTranslation:function(){return E},isRTL:function(){return O},resetLocaleData:function(){return F},setLocaleData:function(){return k},sprintf:function(){return s},subscribe:function(){return S}});var t=e(9756),n=e.n(t),i=e(124),o=e.n(i);const a=n()(console.error);function s(t){try{for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r":5,">=":5,"==":4,"!=":4,"&&":3,"||":2,"?":1,"?:":1},l=["(","?"],c={")":["("],":":["?","?:"]},p=/<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;var f={"!":function(t){return!t},"*":function(t,n){return t*n},"/":function(t,n){return t/n},"%":function(t,n){return t%n},"+":function(t,n){return t+n},"-":function(t,n){return t-n},"<":function(t,n){return t":function(t,n){return t>n},">=":function(t,n){return t>=n},"==":function(t,n){return t===n},"!=":function(t,n){return t!==n},"&&":function(t,n){return t&&n},"||":function(t,n){return t||n},"?:":function(t,n,e){if(t)throw n;return e}};function d(t){var n=function(t){for(var n,e,r,i,o=[],a=[];n=t.match(p);){for(e=n[0],(r=t.substr(0,n.index).trim())&&o.push(r);i=a.pop();){if(c[e]){if(c[e][0]===i){e=c[e][1]||e;break}}else if(l.indexOf(i)>=0||u[i]1===t?0:1},x=/^i18n\.(n?gettext|has_translation)(_|$)/,y=(t,n,e)=>{const r=new g({}),i=new Set,o=()=>{i.forEach((t=>t()))},a=function(t){var n;let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";r.data[e]={...r.data[e],...t},r.data[e][""]={...v,...null===(n=r.data[e])||void 0===n?void 0:n[""]},delete r.pluralForms[e]},s=(t,n)=>{a(t,n),o()},u=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default",n=arguments.length>1?arguments[1]:void 0,e=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0;return r.data[t]||a(void 0,t),r.dcnpgettext(t,n,e,i,o)},l=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return t},c=(t,n,r)=>{let i=u(r,n,t);return e?(i=e.applyFilters("i18n.gettext_with_context",i,t,n,r),e.applyFilters("i18n.gettext_with_context_"+l(r),i,t,n,r)):i};if(t&&s(t,n),e){const t=t=>{x.test(t)&&o()};e.addAction("hookAdded","core/i18n",t),e.addAction("hookRemoved","core/i18n",t)}return{getLocaleData:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return r.data[t]},setLocaleData:s,addLocaleData:function(t){var n;let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";r.data[e]={...r.data[e],...t,"":{...v,...null===(n=r.data[e])||void 0===n?void 0:n[""],...null==t?void 0:t[""]}},delete r.pluralForms[e],o()},resetLocaleData:(t,n)=>{r.data={},r.pluralForms={},s(t,n)},subscribe:t=>(i.add(t),()=>i.delete(t)),__:(t,n)=>{let r=u(n,void 0,t);return e?(r=e.applyFilters("i18n.gettext",r,t,n),e.applyFilters("i18n.gettext_"+l(n),r,t,n)):r},_x:c,_n:(t,n,r,i)=>{let o=u(i,void 0,t,n,r);return e?(o=e.applyFilters("i18n.ngettext",o,t,n,r,i),e.applyFilters("i18n.ngettext_"+l(i),o,t,n,r,i)):o},_nx:(t,n,r,i,o)=>{let a=u(o,i,t,n,r);return e?(a=e.applyFilters("i18n.ngettext_with_context",a,t,n,r,i,o),e.applyFilters("i18n.ngettext_with_context_"+l(o),a,t,n,r,i,o)):a},isRTL:()=>"rtl"===c("ltr","text direction"),hasTranslation:(t,n,i)=>{var o,a;const s=n?n+""+t:t;let u=!(null===(o=r.data)||void 0===o||null===(a=o[null!=i?i:"default"])||void 0===a||!a[s]);return e&&(u=e.applyFilters("i18n.has_translation",u,t,n,i),u=e.applyFilters("i18n.has_translation_"+l(i),u,t,n,i)),u}}};var b=window.wp.hooks;const _=y(void 0,void 0,b.defaultHooks);var m=_;const w=_.getLocaleData.bind(_),k=_.setLocaleData.bind(_),F=_.resetLocaleData.bind(_),S=_.subscribe.bind(_),j=_.__.bind(_),L=_._x.bind(_),T=_._n.bind(_),D=_._nx.bind(_),O=_.isRTL.bind(_),E=_.hasTranslation.bind(_)}(),(window.wp=window.wp||{}).i18n=r}();